package meter

// Meter represents detailed information about a smart meter device
type Meter struct {
	ID               string `json:"id"`                 // 设备唯一ID
	CID              string `json:"cid"`                // 设备编号ID
	CollectorID      string `json:"collectorid"`        // 采集器号，NB设备采集器号与设备一致
	Address          string `json:"address"`            // 表地址
	PriceID          string `json:"priceid"`            // 关联价格ID
	Rate             string `json:"rate"`               // 费率
	AccountID        string `json:"account_id"`         // 户号
	Count            string `json:"count"`              // 数据数量或度数
	DeviceType       string `json:"device_type"`        // 设备类型（0=电表等）
	Type             string `json:"type"`               // 设备号类型或其他类型标识
	RelayState       string `json:"relay_state"`        // 继电器状态（1=开启，0=关闭）
	Description      string `json:"description"`        // 备注或设备描述信息
	C0               string `json:"c0"`                 // 电量读数0
	C1               string `json:"c1"`                 // 电量读数1
	C2               string `json:"c2"`                 // 电量读数2
	C3               string `json:"c3"`                 // 电量读数3
	C4               string `json:"c4"`                 // 电量读数4
	RemainMoney      string `json:"remain_money"`       // 剩余金额
	RemainModifyTime string `json:"remain_modify_time"` // 剩余金额修改时间
	UsageModifyTime  string `json:"usage_modify_time"`  // 用量修改时间
}

// MeterListRequest represents the request parameters for device list API
// Simplified version without filtering or pagination parameters
type MeterListRequest struct {
	// No request parameters needed for basic device list
}

// MeterListData represents the data section of device list response
type MeterListData struct {
	Data   []Meter `json:"data"`   // 设备列表
	Status int     `json:"status"` // 状态
	Total  int     `json:"total"`  // 总数
}

// MeterListResponse represents the complete response from device list API
type MeterListResponse struct {
	Code    int            `json:"code"`    // 响应状态码
	Message string         `json:"message"` // 响应消息
	Data    *MeterListData `json:"data"`    // 响应数据
}

// Validate validates the MeterListRequest parameters
// Simplified version with no validation needed
func (r *MeterListRequest) Validate() error {
	// No validation needed for empty request
	return nil
}

// IsActive checks if the device is currently active (relay state = "1")
func (d *Meter) IsActive() bool {
	return d.RelayState == "1"
}

// HasRemainMoney checks if the device has remaining money
func (d *Meter) HasRemainMoney() bool {
	return d.RemainMoney != "" && d.RemainMoney != "0" && d.RemainMoney != "0.00"
}

// GetDeviceTypeDescription returns a human-readable description of the device type
func (d *Meter) GetDeviceTypeDescription() string {
	switch d.DeviceType {
	case "1":
		return "电表"
	case "2":
		return "水表"
	default:
		return "未知设备类型"
	}
}
